python凯撒密码 您所在的位置:网站首页 python 删除list python凯撒密码

python凯撒密码

2023-04-06 23:47| 来源: 网络整理| 查看: 265

来自公众号:Python之禅

网址:http://www.pythonchallenge.com/

这个网站提供了33道智力题,需要用Python里面的一些知识去解决,当然你也可以使用其他语言,每道题都有解题线索,你要根据提示获取答案后才能进入下一题。截至目前,已经有3369095位用户试图发起挑战。

dbf74338f547d420c6c874ee846aafd4.png

第一题

第一题是热身题,你要计算2的38次幂,计算结果就是第二题的入口链接

cf4b163bee75b0dca124f169e6d68286.png

>>> 2**38274877906944

第二题

第二题的入口链接是 http://www.pythonchallenge.com/pc/def/274877906944.html ,如果你懂凯撒密码的话,你就知道怎么解这道题了。凯撒密码就是将字符移动固定位数得到一个新的字符。

6bfaf686178a0c0ab9f2b6d0c960ce1c.png

通过图中提示,我们发现字符向右移动了两位,K变成了M,O 变成了Q

>>> chr(ord('K')+2)'M'>>> chr(ord('O')+2)'Q'>>> chr(ord('E')+2)'G'

因此,可以我们只需要把图片下方这串加密的文本进行解码就可以得到正确的文本。

text = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."s = ""for i in text:import stringif i in string.ascii_letters:if ord(i) s += chr((ord(i) + 2))else: s += chr((ord(i) - 26 + 2))else: s += iprint(s)

结果

i hope you didnt translate it by hand. thats what computers are for. doing it in by hand is inefficient and that's why this text is so long. using string.maketrans() is recommended. now apply on the url.

这里有两个需要注意的地方,第一:非字符不需要处理,第二:当字符对应的asscii值大于121(对应的字符是y),需要减 26,相当于 y对应的a。解码出来后提示告诉我们其实可以直接使用函数string.maketrans(),因为这种方式更高效,不得不说,这道理很有趣。不过这种方式在python3已经不支持了。

所以第三题的链接只要将map转换成ocr 既可。

第三题

第三题链接:http://www.pythonchallenge.com/pc/def/ocr.html, 这道题根据提示说是答案可能存在于页面的HTML源代码中

16ea998e96428233fa46de3097927aa1.png

提示告诉我们要把注释里面最少出现的字符找出来

770b5f6d7b1be82ca9dbc5b0833a2e4e.png

我们可以直接使用Counter这个类来处理

text = """%%$@_$^__#)^)&!_+]!*@&^}@[@%]()%+$&[(_@%+%$*^@$^!+]!&_#)_*}{}}!}_]$[%}@[{_@#_^{*{!!"""from collections import Countercounter = Counter(text)for c in counter.items(): print(c)

输出结果

('%', 6104)('$', 6046)('@', 6157)('_', 6112)('^', 6030)('#', 6115)(')', 6186)('&', 6043)('!', 6079)('+', 6066)(']', 6152)('*', 6034)('}', 6105)('[', 6108)('(', 6154)('{', 6046)('\n', 1219)('e', 1)('q', 1)('u', 1)('a', 1)('l', 1)('i', 1)('t', 1)('y', 1)

发现出现最少的是 equality 这几个字符,刚好可以组成一个单词,这个单词大概就是第四题的链接。http://www.pythonchallenge.com/pc/def/equality.html

●编号929,输入编号直达本文

●输入m获取文章目录

推荐↓↓↓

0de773ebf7c69f1f241a713be53cde7a.png

人工智能与大数据技术

更多推荐《25个技术类微信公众号》

涵盖:程序人生、算法与数据结构、黑客技术与网络安全、大数据技术、前端开发、Java、Python、Web开发、安卓开发、iOS开发、C/C++、.NET、Linux、数据库、运维等。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有